#include "MonsterFactory.hpp"

using namespace MonsterFactory;

IMonster* AnimalMonsterFactory::CreatePhaseOneMonster(int level) {
  return new PigMonster(level);
}

IMonster* AnimalMonsterFactory::CreatePhaseTwoMonster(int level) {
  return new HorseMonster(level);
}

IMonster* PlantMonsterFactory::CreatePhaseOneMonster(int level) {
  return new TreeMonster(level);
}

IMonster* PlantMonsterFactory::CreatePhaseTwoMonster(int level) {
  return new FlowerMonster(level);
}

IMonster* EliteMonsterFactory::CreatePhaseOneMonster(int level) {
  return new BossMonster(level);
}

IMonster* EliteMonsterFactory::CreatePhaseTwoMonster(int level) {
  return new BossMonster(level); // currently no special design
}

AnimalMonsterFactory* AnimalMonsterFactory::instance = NULL;
AnimalMonsterFactory::Garbo AnimalMonsterFactory::garbo;
PlantMonsterFactory* PlantMonsterFactory::instance = NULL;
PlantMonsterFactory::Garbo PlantMonsterFactory::garbo;
EliteMonsterFactory* EliteMonsterFactory::instance = NULL;
EliteMonsterFactory::Garbo EliteMonsterFactory::garbo;

